<template>
  <table class="my-table">
    <thead>
      <tr>
        <slot name="head"></slot>
      </tr>
    </thead>
    <tbody>
      <tr v-for="(item, index) in data" :key="item.id">
        <slot name="row" :item="item" :index="index"></slot>
      </tr>
    </tbody>
  </table>
</template>

<script>
/**
 * MyTable 初步封装有以下几个问题
 * 1. 数据写死了，应该传入数据动态渲染
 *      父传子 (传入数据)
 *      v-for
 * 2. 结构写死了
 *      插槽 - 具名插槽
 *      自定义表头和内容
 *
 *      还需要使用作用域插槽 需要将数据传给使用者，方便使用者便利 使用对应的数据
 */
export default {
  name: "MyTable",
  props: {
    data: {
      type: Array,
      default: () => {
        return [];
      },
    },
  },
  created() {
    // 开启定时器 自己写的定时器
    this.timerId = setInterval(() => {
      console.log("定时器每秒执行一次");
    }, 1000);
  },
  beforeDestroy() {
    console.log("销毁前");
  },
  destroyed() {
    console.log("销毁后");
    // 清除定时器
    clearInterval(this.timerId);
  },
};
</script>

<style lang="less" scoped>
.my-table {
  width: 100%;
  border-spacing: 0;
  img {
    width: 100px;
    height: 100px;
    object-fit: contain;
    vertical-align: middle;
  }
  th {
    background: #f5f5f5;
    border-bottom: 2px solid #069;
  }
  td {
    border-bottom: 1px dashed #ccc;
  }
  td,
  th {
    text-align: center;
    padding: 10px;
    transition: all 0.5s;
    &.red {
      color: red;
    }
  }
  .none {
    height: 100px;
    line-height: 100px;
    color: #999;
  }
}
</style>